iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0

跟著大宏哥一起斷捨離

我大宏哥,無情的斷捨離機器
覺得沒用的東西,就是直接斷捨離,毫不留情
沒用的群組直接斷捨離,高歌離席不帶猶豫
但程式沒辦法斷捨離,只能盡量低耦合高內聚

什麼是耦合?什麼是內聚?

內聚可以說是將我們所需的資料跟程式包在一個模組內,使其成為一個單獨的個體執行
耦合則是模組間互相有關連,例如共用一段程式碼
在WPF中想要達到高內聚低耦合,程式設計模式MVVM必不可少
MVVM利用了WPF的資料繫結機制,大幅度的降低了Xmal檔案和CS檔案的耦合度
這樣的好處是UI跟底層邏輯可以同時開發,換介面幾乎不用動到底層邏輯
這也是我推薦直接學習WPF的原因,因為WPF學完基本上也會寫WinForm。

WPF與WinForm

WinForm使用Windows Form控件模型,基本上你需要什麼控制項就去工具箱找到對應的控制項拉一到指定位置即可,使用起來相對簡單。WPF則是使用XAML控件模型,根據開發者需求靈活自訂義和擴展控制項。
舉例來說,想實現一個帶有圖像和文字的按鈕,在 WinForms 你只能自己畫或者用第三方控制項,畢竟這并不是一個標準的 Windows 控制項。而在 WPF 裏面,可以通過組合方式來實現。具體來說,就是在Button內插入一個Image和TextBlock。
https://ithelp.ithome.com.tw/upload/images/20230920/20151710kzIPI9Sdjg.jpg
https://ithelp.ithome.com.tw/upload/images/20230920/201517103B2hngvQm5.jpg

我們一般在後臺程式碼中會使用控制元件的名字來操作控制元件的各種屬性,進行UI更新,而在WPF中通常是通過資料繫結來更新UI;在響應使用者操作上,WinForm是通過控制元件的事件來處理,而WPF可以使用命令繫結的方式來處理,耦合度將降低。

MVVM簡介

MVVM分別是資料層(Model)、視圖層(View)、資料視圖(ViewModel)的回應式框架。
https://ithelp.ithome.com.tw/upload/images/20230920/20151710VFKnc9tvWO.png

View

  • 負責顯示 UI、監聽動作(不處理邏輯,只負責顯示資料,接收到點擊事件就請 ViewModel 處理)

ViewModel

  • 負責提供UI所需資料、邏輯判斷
  • 根據需求向 Model 存取資料

Model

  • 負責提供ViewModel資料
  • 通常會叫做 xxxxxRepository
  • 若是有多個資料來源,Repository 層可以抽象化,變成一個 interface

上一篇
C#練習-5(Array)
下一篇
WPF-Converter
系列文
自我挑戰雜記18
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言